package com.hospital.workstation.service;

import com.hospital.common.core.domain.R;
import com.hospital.common.utils.StreamUtils;
import com.hospital.workstation.domain.ElectronicMonitorOneInfo;
import com.hospital.workstation.domain.vo.ElectronicMonitorOneInfoVo;
import com.hospital.workstation.domain.bo.ElectronicMonitorOneInfoBo;
import com.hospital.common.core.page.TableDataInfo;
import com.hospital.common.core.domain.PageQuery;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * A表 监测信息Service接口
 *
 * @author whb
 * @date 2024-05-07
 */
public interface IElectronicMonitorOneInfoService {

    /**
     * 查询A表 监测信息
     */
    ElectronicMonitorOneInfoVo queryById(Long id);

    /**
     * 查询A表 监测信息列表
     */
    TableDataInfo<ElectronicMonitorOneInfoVo> queryPageList(ElectronicMonitorOneInfoBo bo, PageQuery pageQuery);

    /**
     * 查询A表 监测信息列表
     */
    List<ElectronicMonitorOneInfoVo> queryList(ElectronicMonitorOneInfoBo bo);

    /**
     * 保存A表 监测信息
     */
    R<Void> insertByBo(ElectronicMonitorOneInfoBo bo);

    /**
     * 修改A表 监测信息
     */
    Boolean updateByBo(ElectronicMonitorOneInfoBo bo);

    /**
     * 校验并批量删除A表 监测信息信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 根据患者流水号查询监测信息
     *
     * @param medicalRecordNo 患者流水号
     * @return
     */
    R<ElectronicMonitorOneInfoVo> queryMonitorOneInfo(Integer medicalRecordNo);

    /**
     * 检测表流水号是否存在
     *
     * @param monitorRecordNo 检测表流水号
     * @return
     */
    R<Boolean> isExistMonitorRecordNo(Integer monitorRecordNo);

    /**
     * 查询患者的诊断信息
     *
     * @param medicalRecordNo 患者流水号
     * @return
     */
    Map queryDiagInfo(Integer medicalRecordNo);

    /**
     * 驳回
     *
     * @param bo
     * @return
     */
    R<Void> reject(ElectronicMonitorOneInfoBo bo);

    /* 导出检测表A
     *
     * @param medicalRecordNo 病历号
     */
    void exportFile(HttpServletResponse response, Long[] ids) throws IOException;
}
